import java.util.Comparator;
import java.util.PriorityQueue;

/**
 *给你一个长度为 n 下标从 0 开始的字符串 blocks ，blocks[i] 要么是 'W' 要么是 'B' ，表示第 i 块的颜色。字符 'W' 和 'B' 分别表示白色和黑色。
 *
 * 给你一个整数 k ，表示想要 连续 黑色块的数目。
 *
 * 每一次操作中，你可以选择一个白色块将它 涂成 黑色块。
 *
 * 请你返回至少出现 一次 连续 k 个黑色块的 最少 操作次数。
 * https://leetcode.cn/problems/minimum-recolors-to-get-k-consecutive-black-blocks/description/
 */
class MinimumRecolors {
    public int minimumRecolors(String blocks, int k) {
        char[] arr = blocks.toCharArray();
        int left = 0;
        int right = 0;
        int ret = Integer.MAX_VALUE;
        int len = blocks.length();
        int wCount = 0;
        while(right < len) {
            if(arr[right] == 'W') {
                wCount++;
            }
            right++;
            if(right - left == k) {
                ret = Math.min(ret,wCount);
                if(arr[left] == 'W') {
                    wCount--;
                }
                left++;
            }
        }

        return ret;
    }
}